<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta
            name="viewport"
            content="width=device-width, initial-scale=1.0, maximum-scale=1"
        />
        <title>Sequin - Fast and reliable Postgres change data capture</title>
        <meta
            name="description"
            content="Stream data from Postgres directly to Kafka, Redis, and more. Replace complex tools like Debezium and consolidate workflows."
        />
        <link rel="icon" type="image/png" href="/favicon.png" />

        <!-- Google Fonts - JetBrains Mono (async loading) -->
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
        <link
            rel="preload"
            href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap"
            as="style"
            onload="this.onload=null;this.rel='stylesheet'"
        />
        <noscript>
            <link
                rel="stylesheet"
                href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap"
            />
        </noscript>

        <!-- Tailwind CSS CDN -->
        <script src="https://cdn.tailwindcss.com"></script>
        <script>
            tailwind.config = {
                theme: {
                    extend: {
                        colors: {
                            "sequin-blue": "#0277bd",
                            "sequin-gray": "hsl(215 16% 47%)",
                        },
                        fontFamily: {
                            mono: [
                                "JetBrains Mono",
                                "Berkeley Mono",
                                "SF Mono",
                                "Monaco",
                                "Cascadia Code",
                                "Roboto Mono",
                                "Consolas",
                                "Courier New",
                                "monospace",
                            ],
                        },
                    },
                },
            };
        </script>

        <!-- Custom CSS -->
        <link rel="stylesheet" href="styles.css" />
    </head>
    <body class="min-h-screen bg-white text-gray-900">
        <!-- Navigation -->
        <nav class="border-b border-gray-200 sticky top-0 bg-white z-50">
            <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
                <div class="flex justify-between items-center py-4">
                    <div class="flex items-center space-x-8">
                        <div class="font-semibold">Sequin</div>
                    </div>

                    <!-- Desktop Navigation -->
                    <div class="hidden sm:flex items-center space-x-4">
                        <a
                            href="https://sequinstream.com/docs"
                            class="text-gray-600 hover:text-gray-900 transition-colors"
                            data-testid="link-docs"
                        >
                            Docs
                        </a>
                        <a
                            href="https://blog.sequinstream.com/"
                            class="text-gray-600 hover:text-gray-900 transition-colors"
                            data-testid="link-blog"
                        >
                            Blog
                        </a>
                        <a
                            href="https://github.com/sequinstream/sequin"
                            class="btn btn-primary btn-sm"
                            data-testid="button-try-now-header"
                        >
                            <img
                                src="icons/github-white.svg"
                                alt="GitHub"
                                class="icon-sm mr-1"
                            />
                            <span id="header-stars">-</span>
                            <span class="ml-2 hidden sm:inline">Try now</span>
                        </a>
                    </div>

                    <!-- Mobile Navigation -->
                    <div class="sm:hidden flex items-center space-x-4">
                        <a
                            href="https://github.com/sequinstream/sequin"
                            class="btn btn-primary btn-sm"
                            data-testid="button-try-now-header-mobile"
                        >
                            <img
                                src="icons/github-white.svg"
                                alt="GitHub"
                                class="icon-sm mr-1"
                            />
                            <span id="header-stars-mobile">-</span>
                            <span class="ml-2 hidden sm:inline">Try now</span>
                        </a>
                        <button
                            id="mobile-menu-button"
                            class="text-gray-600 hover:text-gray-900 p-2"
                            aria-label="Toggle menu"
                        >
                            <svg
                                class="h-6 w-6"
                                fill="none"
                                viewBox="0 0 24 24"
                                stroke="currentColor"
                            >
                                <path
                                    stroke-linecap="round"
                                    stroke-linejoin="round"
                                    stroke-width="2"
                                    d="M4 6h16M4 12h16M4 18h16"
                                />
                            </svg>
                        </button>
                    </div>
                </div>

                <!-- Mobile Menu -->
                <div
                    id="mobile-menu"
                    class="sm:hidden hidden border-t border-gray-200 py-4"
                >
                    <div class="flex space-x-6 px-2">
                        <a
                            href="https://sequinstream.com/docs"
                            class="text-gray-600 hover:text-gray-900 transition-colors py-2"
                            data-testid="link-docs-mobile"
                        >
                            Docs
                        </a>
                        <a
                            href="https://blog.sequinstream.com/"
                            class="text-gray-600 hover:text-gray-900 transition-colors py-2"
                            data-testid="link-blog-mobile"
                        >
                            Blog
                        </a>
                    </div>
                </div>
            </div>
        </nav>

        <main class="max-w-4xl mx-auto py-12 space-y-16">
            <!-- Hero Section -->
            <section class="text-left space-y-6 px-4 sm:px-6 lg:px-8">
                <h1 class="hero-header">
                    <img
                        src="icons/postgres.svg"
                        alt="PostgreSQL"
                        class="postgres-icon"
                    />
                    <span
                        >Fast and reliable
                        <span style="color: #0277bd">Postgres</span> change data
                        capture</span
                    >
                </h1>

                <p class="text-gray-600 max-w-4xl">
                    Stream data from Postgres directly to Kafka, Redis, and
                    more. Replace complex tools like Debezium or pipelines like
                    Flink.
                </p>
                <p class="text-gray-600 max-w-4xl">
                    Sequin ensures 100% delivery of database changes to sinks
                    with strict ordering and exactly-once processing.
                </p>

                <div
                    class="flex flex-col sm:flex-row justify-start items-start space-y-4 sm:space-y-0 sm:space-x-6"
                >
                    <a
                        href="https://github.com/sequinstream/sequin"
                        class="btn btn-primary w-40 sm:w-auto"
                        data-testid="button-github-star"
                    >
                        <img
                            src="icons/github-white.svg"
                            alt="GitHub"
                            class="icon mr-2"
                        />
                        <span id="hero-stars">-</span>
                        <span class="ml-2">Try now</span>
                    </a>
                    <a
                        href="https://join.slack.com/t/sequin-community/shared_invite/zt-37begzach-4aUwR5xt_XgivdvctZDemA"
                        class="btn btn-outline w-40 sm:w-auto"
                        data-testid="button-join-slack"
                    >
                        <img
                            src="icons/slack.svg"
                            alt="Slack"
                            class="icon mr-2"
                        />
                        <span>Join Slack</span>
                    </a>
                    <a
                        href="https://discord.gg/BV8wFXvNtY"
                        class="btn btn-outline w-40 sm:w-auto"
                        data-testid="button-join-discord"
                    >
                        <img
                            src="icons/discord.svg"
                            alt="Discord"
                            class="icon mr-2"
                        />
                        <span>Join Discord</span>
                    </a>
                </div>
            </section>

            <!-- Trusted by -->
            <section id="trusted-by" class="space-y-6 px-4 sm:px-6 lg:px-8">
                <h2 class="text-center text-gray-600 text-sm">Trusted by</h2>

                <div
                    class="grid grid-cols-2 sm:grid-cols-3 gap-8 items-center justify-items-center opacity-60"
                >
                    <img
                        src="logos/goldsky.svg"
                        alt="Goldsky"
                        class="h-8 w-auto object-contain"
                    />
                    <img
                        src="logos/scentbird.svg"
                        alt="Scentbird"
                        class="h-7 w-auto object-contain"
                    />
                    <img
                        src="logos/aviron.svg"
                        alt="Aviron"
                        class="h-7 w-auto object-contain"
                    />
                    <img
                        src="logos/beeldi.svg"
                        alt="Beeldi"
                        class="h-6 w-auto object-contain"
                    />
                    <img
                        src="logos/govisa.svg"
                        alt="GoVisa"
                        class="h-5 w-auto object-contain"
                    />
                    <img
                        src="logos/camper-mate.svg"
                        alt="Camper Mate"
                        class="h-12 w-auto object-contain"
                    />
                </div>
            </section>

            <hr class="border-gray-200" />

            <!-- Killer features -->
            <section id="performance" class="space-y-8 px-4 sm:px-6 lg:px-8">
                <h2 class="section-header">Killer features</h2>

                <table class="table">
                    <tr>
                        <td><strong>Bring your database</strong></td>
                        <td>
                            Sequin is not an extension. It works with any
                            Postgres database version 12+.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Never miss a change</strong></td>
                        <td>
                            Sequin ensures 100% delivery of database changes to
                            sinks with strict ordering.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Exactly-once processing</strong></td>
                        <td>
                            Sequin ensures exactly-once processing of database
                            changes using idempotency keys.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Backfills</strong></td>
                        <td>
                            Backfill sinks at any point in time. Run partial
                            backfills to only replay specific rows.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Observability</strong></td>
                        <td>
                            Sequin exposes a metrics endpoint using Prometheus
                            and comes with a Grafana dashboard.
                        </td>
                    </tr>
                </table>
            </section>

            <hr class="border-gray-200" />

            <!-- Architecture Section -->
            <section id="architecture" class="space-y-8 px-4 sm:px-6 lg:px-8">
                <h2 class="section-header">How it works</h2>

                <p class="text-gray-600">
                    Sequin is a Docker image you can run next to your Postgres
                    database. Sequin itself is built on Postgres and uses
                    Postgres to store sink state. You'll configure sinks for one
                    or more tables in your database, and Sequin will stream
                    changes to your chosen destinations.
                </p>

                <div class="space-y-6">
                    <div class="p-6 rounded-lg overflow-x-auto">
                        <pre
                            class="font-mono diagram-text whitespace-pre break-normal overflow-x-auto text-[8px] sm:text-sm md:text-base lg:text-lg"
                        >
┌───────────┐   WAL    ┌─────────┐     Exactly-once      ┌───────┐
│ Postgres  │ ═══════► │ Sequin  │ ═══════════════════►  │ Sink  │
└───────────┘          └─────────┘     processing        └───────┘</pre
                        >
                    </div>
                </div>
            </section>

            <hr class="border-gray-200" />

            <!-- Destinations Section -->
            <section id="destinations" class="space-y-8 px-4 sm:px-6 lg:px-8">
                <h2 class="section-header">Supported destinations</h2>

                <p class="text-gray-600">
                    Sequin supports streaming to a range of destinations
                    including streaming platforms, queues, search indexes, and
                    webhooks:
                </p>

                <div class="grid grid-cols-1 sm:grid-cols-2 gap-8">
                    <div class="space-y-4">
                        <h3 class="flex items-center space-x-2">
                            <span>Streams & queues</span>
                        </h3>
                        <ul class="space-y-2 text-gray-600">
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-kafka"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Kafka</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-sqs"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>AWS SQS</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-pubsub"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>GCP Pub/Sub</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-redis-streams"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Redis Streams</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-nats"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>NATS</span>
                            </li>
                        </ul>
                    </div>

                    <div class="space-y-4">
                        <h3 class="flex items-center space-x-2">
                            <span>Search & APIs</span>
                        </h3>
                        <ul class="space-y-2 text-gray-600">
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-elasticsearch"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Elasticsearch</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-typesense"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Typesense</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-meilisearch"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Meilisearch</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-webhooks"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Webhooks</span>
                            </li>
                            <li
                                class="flex items-center space-x-2"
                                data-testid="destination-redis-strings"
                            >
                                <span
                                    class="w-2 h-2 rounded-full"
                                    style="background-color: #0277bd"
                                ></span>
                                <span>Redis Strings</span>
                            </li>
                        </ul>
                    </div>
                </div>
            </section>

            <hr class="border-gray-200" />

            <!-- Advanced Processing Pipeline Section -->
            <section
                id="processing-pipeline"
                class="space-y-8 px-4 sm:px-6 lg:px-8"
                style="
                    background-color: #eff6ff;
                    padding-top: 2rem;
                    padding-bottom: 2rem;
                "
            >
                <h2 class="section-header">Advanced processing pipeline</h2>

                <p class="text-gray-700">
                    Transform and route your data with powerful processing
                    capabilities:
                </p>

                <div class="p-6 overflow-x-auto" style="margin: 0px">
                    <pre
                        class="font-mono diagram-text whitespace-pre break-normal overflow-x-auto text-xs sm:text-sm md:text-base lg:text-lg"
                    >
╔══════════════╗
║   Postgres   ║
╚══════════════╝
       │
       │   WAL
       ▼
╔════════════════════════════════════╗
║              Sequin                ║
║    ┌──────────┐   ┌──────────┐     ║
║    │  Enrich  │   │  Filter  │     ║
║    └──────────┘   └──────────┘     ║
║    ┌──────────┐   ┌──────────┐     ║
║    │Transform │   │  Route   │     ║
║    └──────────┘   └──────────┘     ║
╚════════════════════════════════════╝
       │
       │
       ▼
╔══════════════╗
║     Sink     ║
╚══════════════╝</pre
                    >
                </div>

                <table class="table">
                    <tr>
                        <td><strong>Enrich</strong></td>
                        <td>
                            Enrich changes by joining back to data in Postgres
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Filters</strong></td>
                        <td>
                            Write custom filters to include or exclude changes
                            from Postgres
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Transform</strong></td>
                        <td>
                            Write custom code to shape messages to your desire
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Routing</strong></td>
                        <td>
                            Route messages to specific topics, endpoints, or
                            indexes
                        </td>
                    </tr>
                </table>
            </section>

            <hr class="border-gray-200" />

            <!-- Use Cases Section -->
            <section id="features" class="space-y-8 px-4 sm:px-6 lg:px-8">
                <h2 class="section-header">Key use cases</h2>

                <p class="text-gray-600">
                    Sequin works great for CDC use cases that require real-time
                    data streaming and processing.
                </p>

                <table class="table">
                    <tr>
                        <td><strong>Audit logging</strong></td>
                        <td>
                            Track, enrich, and record every change in your
                            database for compliance or feature development.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Managing caches</strong></td>
                        <td>
                            Keep application caches in sync with your database
                            by streaming changes to Redis compliant caches.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Search indexing</strong></td>
                        <td>
                            End-to-end tooling to warm search indexes like
                            Typesense and Elasticsearch and keep them in sync
                            with sub-second latency.
                        </td>
                    </tr>
                    <tr>
                        <td><strong>Streaming events</strong></td>
                        <td>
                            Stream database changes as events for other services
                            to consume using Kafka, SQS, Pub/Sub and more.
                        </td>
                    </tr>
                </table>
            </section>

            <hr class="border-gray-200" />

            <!-- Why Sequin Section -->
            <section id="why-sequin" class="space-y-8 px-4 sm:px-6 lg:px-8">
                <h2 class="section-header">Why Sequin?</h2>

                <p class="text-gray-600">
                    We all know Postgres is great for storing and querying data.
                    But what about when you need to stream changes to other
                    systems?
                </p>

                <div class="space-y-6">
                    <p class="text-gray-600">
                        <strong
                            >Postgres has limited support for change
                            streaming.</strong
                        >
                        While Postgres supports logical replication, it's
                        ephemeral and doesn't support features developers need
                        like exactly-once processing, backfills, or delivery
                        tracking.
                    </p>

                    <p class="text-gray-600">
                        Existing tools aren't much better. Debezium is
                        complicated to setup, requires Kafka, and doesn't scale
                        well. ETL tools like Fivetran have limited support for
                        operational destinations and write changes in batches,
                        not in real-time.
                    </p>

                    <p class="text-gray-600">
                        <strong
                            >Sequin provides the fastest, simplest experience
                            for streaming data from Postgres.</strong
                        >
                        It streams changes in real-time and doesn't require
                        complex infrastructure to operate.
                    </p>
                </div>

                <div class="card">
                    <h3 class="mb-4">Sequin vs Debezium</h3>
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                        <div class="font-semibold" style="color: #0277bd">
                            <p class="font-bold mb-2">Sequin</p>
                            <ul class="space-y-1 text-gray-600">
                                <li>• Single Docker container</li>
                                <li>• No Kafka needed</li>
                                <li>• Built-in web console</li>
                                <li>• Operational simplicity</li>
                                <li>• Simple configuration</li>
                            </ul>
                        </div>
                        <div>
                            <h4 class="font-semibold text-gray-700 mb-2">
                                Debezium
                            </h4>
                            <ul class="space-y-1 text-gray-600">
                                <li>• Complex setup with Kafka</li>
                                <li>• No built-in UI</li>
                                <li>• Vertical scale limits</li>
                                <li>• Complex configuration</li>
                            </ul>
                        </div>
                    </div>
                </div>
            </section>

            <hr class="border-gray-200" />

            <!-- Features Section -->
            <section id="comparison" class="space-y-8 px-4 sm:px-6 lg:px-8">
                <h2 class="section-header">Platform features</h2>

                <p class="text-gray-600">
                    Start with the Sequin console, then use the CLI,
                    <span
                        style="
                            background-color: #f3f4f6;
                            padding: 0.125rem 0.25rem;
                            border-radius: 0.25rem;
                            font-family: monospace;
                        "
                        >sequin.yml</span
                    >
                    and API to manage your sinks with end-to-end tooling.
                </p>

                <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
                    <div class="space-y-4">
                        <h3 class="font-semibold flex items-center space-x-2">
                            <span>Reliability & guarantees</span>
                        </h3>
                        <ul class="space-y-3 text-gray-600">
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-delivery"
                            >
                                <span
                                    class="w-2 h-2 bg-green-500 rounded-full mt-2 flex-shrink-0"
                                ></span>
                                <div>
                                    <strong>100% delivery guarantee</strong>
                                    with automatic retries and exponential
                                    backoff
                                </div>
                            </li>
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-exactly-once"
                            >
                                <span
                                    class="w-2 h-2 bg-green-500 rounded-full mt-2 flex-shrink-0"
                                ></span>
                                <div>
                                    <strong>Exactly-once processing</strong>
                                </div>
                            </li>
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-ordering"
                            >
                                <span
                                    class="w-2 h-2 bg-green-500 rounded-full mt-2 flex-shrink-0"
                                ></span>
                                <div>
                                    <strong>Strict ordering</strong> maintains
                                    database transaction order
                                </div>
                            </li>
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-backfill"
                            >
                                <span
                                    class="w-2 h-2 bg-green-500 rounded-full mt-2 flex-shrink-0"
                                ></span>
                                <div>
                                    <strong>Backfill</strong> from the beginning
                                    of the table or a specific point
                                </div>
                            </li>
                        </ul>
                    </div>

                    <div class="space-y-4">
                        <h3 class="font-semibold flex items-center space-x-2">
                            <span>Developer experience</span>
                        </h3>
                        <ul class="space-y-3 text-gray-600">
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-console"
                            >
                                <span
                                    class="w-2 h-2 rounded-full mt-2 flex-shrink-0"
                                    style="background-color: #0277bd"
                                ></span>
                                <div>
                                    <strong>Web console</strong> for sink
                                    management and monitoring
                                </div>
                            </li>
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-cli"
                            >
                                <span
                                    class="w-2 h-2 rounded-full mt-2 flex-shrink-0"
                                    style="background-color: #0277bd"
                                ></span>
                                <div>
                                    <strong>CLI and API</strong> for
                                    programmatic configuration
                                </div>
                            </li>
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-config"
                            >
                                <span
                                    class="w-2 h-2 rounded-full mt-2 flex-shrink-0"
                                    style="background-color: #0277bd"
                                ></span>
                                <div>
                                    <strong>Configuration as code</strong> with
                                    <span
                                        style="
                                            background-color: #f3f4f6;
                                            padding: 0.125rem 0.25rem;
                                            border-radius: 0.25rem;
                                            font-family: monospace;
                                        "
                                        >sequin.yml</span
                                    >
                                    files
                                </div>
                            </li>
                            <li
                                class="flex items-start space-x-3"
                                data-testid="feature-monitoring"
                            >
                                <span
                                    class="w-2 h-2 rounded-full mt-2 flex-shrink-0"
                                    style="background-color: #0277bd"
                                ></span>
                                <div>
                                    <strong>Observability</strong> with a
                                    Prometheus endpoint
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>
            </section>
        </main>

        <!-- Footer -->
        <footer class="mt-24 py-12 bg-gray-50">
            <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
                <div class="grid grid-cols-2 md:grid-cols-4 gap-8 mb-8">
                    <div>
                        <h3 class="font-semibold mb-4">Product</h3>
                        <ul class="space-y-2 text-gray-600">
                            <li>
                                <a
                                    href="https://sequinstream.com/docs"
                                    class="hover:text-gray-900"
                                    data-testid="footer-docs"
                                    >Documentation</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://sequinstream.com/docs/running-sequin"
                                    class="hover:text-gray-900"
                                    data-testid="footer-self-hosted"
                                    >Self-Hosted</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://sequinstream.com/docs/compare"
                                    class="hover:text-gray-900"
                                    data-testid="footer-compare"
                                    >Compare</a
                                >
                            </li>
                        </ul>
                    </div>
                    <div>
                        <h3 class="font-semibold mb-4">Community</h3>
                        <ul class="space-y-2 text-gray-600">
                            <li>
                                <a
                                    href="https://github.com/sequinstream/sequin"
                                    class="hover:text-gray-900"
                                    data-testid="footer-github"
                                    >GitHub</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://join.slack.com/t/sequin-community/shared_invite/zt-37begzach-4aUwR5xt_XgivdvctZDemA"
                                    class="hover:text-gray-900"
                                    data-testid="footer-slack"
                                    >Slack</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://discord.gg/BV8wFXvNtY"
                                    class="hover:text-gray-900"
                                    data-testid="footer-discord"
                                    >Discord</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://blog.sequinstream.com/"
                                    class="hover:text-gray-900"
                                    data-testid="footer-blog"
                                    >Blog</a
                                >
                            </li>
                        </ul>
                    </div>
                    <div>
                        <h3 class="font-semibold mb-4">Company</h3>
                        <ul class="space-y-2 text-gray-600">
                            <li>
                                <a
                                    href="https://blog.sequinstream.com/"
                                    class="hover:text-gray-900"
                                    data-testid="footer-blog"
                                    >Blog</a
                                >
                            </li>
                        </ul>
                        <ul class="space-y-2 text-gray-600 mt-4">
                            <li>
                                <a
                                    href="https://powerful-trust-414200.framer.app/legal/terms"
                                    class="hover:text-gray-900"
                                    data-testid="footer-terms"
                                    >Terms of Service</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://powerful-trust-414200.framer.app/legal/security"
                                    class="hover:text-gray-900"
                                    data-testid="footer-security"
                                    >Security</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://powerful-trust-414200.framer.app/legal/subprocessors"
                                    class="hover:text-gray-900"
                                    data-testid="footer-subprocessors"
                                    >Subprocessors</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://powerful-trust-414200.framer.app/legal/privacy"
                                    class="hover:text-gray-900"
                                    data-testid="footer-privacy"
                                    >Privacy Policy</a
                                >
                            </li>
                            <li>
                                <a
                                    href="https://powerful-trust-414200.framer.app/legal/dpa"
                                    class="hover:text-gray-900"
                                    data-testid="footer-dpa"
                                    >Data Processing</a
                                >
                            </li>
                        </ul>
                    </div>
                </div>
                <div
                    class="border-t border-gray-200 mt-8 pt-8 text-center text-gray-500"
                >
                    © <span id="current-year"></span> Sequin. All rights
                    reserved.
                </div>
            </div>
        </footer>

        <script>
            // GitHub API fetch
            async function fetchGitHubStats() {
                try {
                    const response = await fetch(
                        "https://api.github.com/repos/sequinstream/sequin",
                    );
                    if (response.ok) {
                        const data = await response.json();
                        const starCount = data.stargazers_count;
                        const formattedStars =
                            starCount >= 1000
                                ? (starCount / 1000).toFixed(1) + "K"
                                : starCount.toString();

                        // Update all buttons
                        document.getElementById("header-stars").textContent =
                            formattedStars;
                        document.getElementById(
                            "header-stars-mobile",
                        ).textContent = formattedStars;
                        document.getElementById("hero-stars").textContent =
                            formattedStars;
                    }
                } catch (error) {
                    console.error("Failed to fetch GitHub stats:", error);
                }
            }

            // Mobile menu toggle
            document
                .getElementById("mobile-menu-button")
                .addEventListener("click", function () {
                    const mobileMenu = document.getElementById("mobile-menu");
                    mobileMenu.classList.toggle("hidden");
                });

            // Set current year
            document.getElementById("current-year").textContent =
                new Date().getFullYear();

            // Fetch GitHub stats on page load
            fetchGitHubStats();

            // Auto-refresh in dev
            let lastModified = null;
            if (location.hostname === "localhost") {
                setInterval(async () => {
                    const response = await fetch("/index.html", {
                        method: "HEAD",
                    });
                    const modified = response.headers.get("last-modified");
                    if (lastModified && lastModified !== modified) {
                        location.reload();
                    }
                    lastModified = modified;
                }, 1000);
            }
        </script>
    </body>
</html>
